#include <AT91SAM7S256.h>
#include "Almacenamiento.h"
#include "queue.h"
#include "Colas.h"
#include "task.h"
#include "FreeRTOS.h"

static xTaskHandle xHand1;

static xTaskHandle xHand2;

void TestAlmacenamientoEnvio()
{
	DatoAlmacenamiento datoAlmacenamiento;
	DatoComunicaciones datoComunicaciones;
		char hora=11;
		char minutos=48;
		char segundos=39;
		char zona= 21;

		datoAlmacenamiento.datoMetano = 1000;
		datoAlmacenamiento.datoTemperatura = 2000;
		datoAlmacenamiento.hora=hora;
		datoAlmacenamiento.minuto=minutos;
		datoAlmacenamiento.segundos=segundos;
		datoAlmacenamiento.zona=zona;

		xQueueSend(colaAlmacenamiento, &datoAlmacenamiento, 1000);

		vTaskDelay(1000);
		xQueueReceive(colaComunicaciones, &datoComunicaciones, 1000);


		LCD_WR_ZONA(datoComunicaciones.zona);
		LCD_WR_HORA(datoComunicaciones.hora,datoComunicaciones.minuto,datoComunicaciones.segundos);
		LCD_WR_TEMP(datoComunicaciones.datoTemperatura);
		LCD_WR_CH3(datoComunicaciones.datoMetano);
	}


void AlmacenamientoTest_SetupEscenario(){
	DatoAlmacenamiento dato;
	
	// Iniciar la tarea de adquisicion de datos
	//xTaskCreate(vAlmacenamiento_AdquisicionDatos, ( signed portCHAR * ) "Task adquisicion", configMINIMAL_STACK_SIZE, NULL, 10, &xHand1);
	
	// Iniciar la tarea de adquisicion de datos
	//xTaskCreate(vAlmacenamiento_EnvioDatos, ( signed portCHAR * ) "Task envio", configMINIMAL_STACK_SIZE, NULL, 10, &xHand2);
	
	dato.datoMetano = 0x1234;
	dato.datoTemperatura = 0x5678;
	dato.hora = 1;
	dato.minuto = 2;
	dato.segundos = 3;
	
	// Se envia el dato a la cola de almacenamiento
	xQueueSend(colaAlmacenamiento, &dato , 10);

}

char AlmacenamientoTest_Test(){
	DatoComunicaciones dato;
	
	if(xQueueReceive(colaComunicaciones,&dato,1000)==pdFALSE){
		return 'R';
	}	
	if(dato.datoMetano != 0x1234){
		return 'M';
	}
	if(dato.datoTemperatura != 0x5678){
		return 'T';
	}
	if(dato.hora != 1){
		return 'H';
	}
	if(dato.minuto != 2){
		return 'M';
	}
	if(dato.hora != 3){
		return 'S';
	}
	return 'O';
	
}



